From 654d74bfb81fc768066181f057aaac0cf04d71ab Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Mon, 16 May 2022 10:50:07 -0700 Subject: [PATCH] gsk/gl: use critical instead of assert in dispose Instead of asserting only in debug builds (which are generally not shipped in distributions) we should deliver a critical log-level message so that these can be found sooner when not developing with jhbuild, Flatpak, etc. Also assert that we've setup the state correctly when realizing the GskGLRenderer object. Fixes #4625 --- gsk/gl/gskglrenderer.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index afb34cd2f1..67cc924cda 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -158,6 +158,10 @@ failure: gdk_profiler_end_mark (start_time, "realize GskGLRenderer", NULL); + /* Assert either all or no state was set */ + g_assert ((ret && self->driver != NULL && self->context != NULL && self->command_queue != NULL) || + (!ret && self->driver == NULL && self->context == NULL && self->command_queue == NULL)); + return ret; } @@ -403,11 +407,11 @@ gsk_gl_renderer_render_texture (GskRenderer *renderer, static void gsk_gl_renderer_dispose (GObject *object) { -#ifdef G_ENABLE_DEBUG GskGLRenderer *self = (GskGLRenderer *)object; - g_assert (self->driver == NULL); -#endif + if (self->driver != NULL) + g_critical ("Attempt to dispose %s without calling gsk_renderer_unrealize()", + G_OBJECT_TYPE_NAME (self)); G_OBJECT_CLASS (gsk_gl_renderer_parent_class)->dispose (object); } -- 2.30.2